package com.situ.mall.generic;

import com.situ.mall.pojo.Category;
import com.situ.mall.pojo.Product;
import org.junit.jupiter.api.Test;

import java.util.ArrayList;
import java.util.List;

public class GenericDemo {
    @Test
    public void test1() {
        // 集合的声明
        List list = new ArrayList();
        list.add("China");
        list.add(1);
        // 集合的使用
        Object o = list.get(0);
        System.out.println(o);
        String str = (String) list.get(0);
        System.out.println(str);
    }

    @Test
    public void test2() {
        List<String> list = new ArrayList<>();
        list.add("China");
        // list.add(1);// 编译时候就报错
        String str = list.get(0);
        System.out.println(str);
    }

    @Test
    public void test3() {
        // 声明泛型集合，集合两端类型必须一致
        List<Object> list1 = new ArrayList<Object>();
        List<String> list2 = new ArrayList<String>();
        List<String> list3 = new ArrayList<>();
        List list4 = new ArrayList<String>();
        list4.add(1);
        // List<Object> list5 = new ArrayList<String>();

        // 泛型类型必须为引用类型，不能为基本数据类型
        // List<int> list6 = new ArrayList<int>();

    }

    @Test
    public void test77() {
        List<String> a = new ArrayList<String>();  //创建泛型
        List<Integer> b = new ArrayList<Integer>();
        Class c1 = a.getClass();  //获取泛型的类型
        Class c2 = b.getClass();
        System.out.println(c1 == c2); //输出true
    }

    /*public void save(List<Product> a) {

    }*/

    public void save(List<Category> b) {

    }
}
